היי :)

קראתי את המדריך המצויין שלך על טיפול בשגיאות (מתוך כוונה למנוע FPD וגם סתם כי זה לא מאגניב לראות 30 שגיאות בעמוד הראשי),

אז עשיתי את הפונקציה הזאת:
function handleError($errtype, $message, $file, $line)
{
   $text = 'An error '.$message.' in file '.$file.' on line '.$line;
   mail('[email protected]', 'קראת שגיאה באתר - FB-Guide', $text);
   echo 'יש תקלה באתר ואנו פועלים לתקנה, תודה על ההבנה';
}

set_error_handler('handleError');

אני לא רוצה להרוג את הקוד/להעביר לדף אחר בכוונה (לפחות לא בשלב הזה), שאני נכנס לוקח לעמוד להטען 6 שניות (רק אם יש שגיאה, אחרת זה רגיל).

איך ניתן לעשות את זה כמו שצריך? ושתבין, אני על WAMP, תאר לך מה זה באחסון רגיל.
אשמח לעזרה!

11 תשובות

avatar ענה intval ב 20 לינואר 2013 #

או שהשש שניות שייכות למה שגורם לשגיאה (למשל חיבור למסד, מנסה להתחבר 6 שניות ואז זורק שגיאה)
או שהשש שניות זה שליחת מייל. תנסה להפעיל בקובץ נפרד את הפונקציה מייל ולראות כמה זמן לוקח לה לבד לקרואת

avatar ענה Helpers ב 20 לינואר 2013 #

מה שגרם לשגיאה זה פשוט ניסיון הדפסת משתנה שלא קיים,
הבעיה הייתה בפונקציית מייל, באמת לוקח לה 6 שניות להשלח.

יש לך רעיון במקרה? אולי לפתוח במסד טבלה בשם errors ואז בפאנל לשלוף כל שגיאה שנכנסת לשם? (בהנחה שאני מכניס).

??

avatar ענה intval ב 20 לינואר 2013 #

קודם כל בכל מקרה עדיף לך לברר עם חברת האחסון למה לוקח לפונקציה 6 שניות ולתקן את זה.
שני, לשלוח הודעות למייל זה רעיון רע, בגלל שאתה הולך לקבל הרבה מאוד ספאם מהשרת שלך עם שכחת משתנה כלשהו וכמה אנשים נסנסו לאתר ולחצו F5 פה ושם.

לרשום לדאטאבייס זה אחלה אופציה. כך בחשבון שיכול להיות שהבעיה עצמה הייתה עם הדאטאבייס
ככה שקודם תצטרך לבדוק שבכלל יש לך חיבור פעיל. ואחרי שתרשום את השגיאה לדאטאבייס, תוכל לוודא שעוד לא היית לך שגיאה כזאת במסד ואם זו פעם ראשונה שמישהו נתקל בשגיאה כזו - אפשר לשלוח על זה מייל.

avatar ענה Helpers ב 20 לינואר 2013 #

-רעיון זה עם ע'..
בכל מקרה אחי אני על וואמפ ולוקח לי 6 שניות (אני משתמש בתוכנה שמתחברת לSMTP של ג'ימייל, אני זה boolval פשוט שחכתי את הסיסמה, נתת לי את התוכנה הזאת בנושא שפתחתי).

אני עד עכשיו לא רשמתי שום שגיאה בדאטאבייס ולדאטאבייס אין שום קשר לזמן הטעינה של המייל.

וחשבתי על משהו כזה:
טבלת site_errors שבפונקציה handleError זה יכניס את השגיאה למסד הנתונים, בטבלה יהיו 5 שדות (כדי להבין את השגיאה כמו שצריך וזה גם ישלף מסודר מאוד לטבלה בפאנל) ID, עמודת details (שתכיל את המשתנה message), עמודת file שתכיל את הקובץ שבו זה קרה (משתנה file), עמודת line שתכיל את השורה בה חלה השגיאה (משתנה line). ואת הIP שממנו קרתה השגיאה. ואז אני יעשה num_rows לכל שגיאה שנכנסת ואם היא קיימת (איפה שהIP שווה לREMOTEֹ_ADDR) זה פשוט לא יכניס אותה.

ואת הכל אני שולף באופן מסודר לטבלה.

מה אתה אומר, רעיון טוב? תשובה בונה בבקשה.

avatar ענה intval ב 20 לינואר 2013 #

מעולה. ההבדל היחידי שיש בין ההודעות שלנו זה שלא הצעתי לך להציג את זה בטבלה בפאנל
בגלל שזה לא אמור להיות בפאנל. פאנל זה חלק מהתוכנה, שגיאות זה מה שלא אמור להיות בתוכנה.
מי שאחרי זה ישתמש בקוד שלך לא צריך לדעת מה יש בקוד שלך ואיך הוא בנוי. הוא צריך שהכל יעבוד אצלו וזהו.
את הלוג של השגיאות אתה עושה בשביל עצמך בתור מפתח וזה לא אמור להיות חלק המתוכנה.

avatar ענה Helpers ב 20 לינואר 2013 #

אז איפה לשים את השגיאות אם לא בפאנל? אני לא רוצה במייל כי זה עושה ספאם, ואין num_rows כבקר על מייל...
עזרה?

avatar ענה intval ב 20 לינואר 2013 #

אתה יכול לרשום לטבלה.
אתה יכול לשלוח לך מייל כשיש שגיאה מסוג מסוים בפעם הראשונה.
אתה לא רוצה לשים את זה בפאנל.

avatar ענה Helpers ב 21 לינואר 2013 #

ואיפה לשים את הטבלה?
יותר פשוט לעשות סוג של file_put_content או fopen & fwrite לקובץ טקסט ושם לרשום את השגיאות?
במידה וכן (ותגיד לי אם כן), אני יכול לעשות בעמוד מסויים באתר שזה יגיד לי כמה שגיאות חדשות נוספו? (או יותר פשוט, כמה שורות חדשות נוספו) ואז שאני אכנס לקובץ זה יאפס את זה?

avatar ענה Helpers ב 22 לינואר 2013 #

??

avatar ענה intval ב 22 לינואר 2013 #

תעשה מה שיותר נוח לך.
זה נטו בשבילך בתור מתכנת.
את המשתמש הסופי של האתר שלך זה לא אמור לעניין בשום צורה.
תאר לך יש בדפדפן פתאום טאב כזה שאתה פתוח ורואה את כל האקסשפנים שהמתכנתים של כרום שכחו לתפוס ואת כל המשתנים של כרום שהם שכחו להגדיר.
שגיאות יכולות להיות, תרשום אותם תתקן אותם, אבל אל תראה למשתמש, גם אם הוא מנהל האתר, כמו שאתה מנהל המחשב שלך, אבל אתה לא יודע על זה שבכרום לא עבד משהו.

מצידם המתפתחים של כרום כן רושמים את כל השגיאות ושולחים לעצמם ריפורטים לאימייל אם משהו לא בסדר
בכרום שאצלך במחשב.

אתה רוצה לרשום לקובץ, תרשום לקובץ.

avatar ענה Helpers ב 23 לינואר 2013 #

אוקיי תודה :)